imagemounter: fetch DDI from GitHub and improve mount reliability#720
Merged
Conversation
zt-luo
commented
May 10, 2026
Contributor
- Switch iOS 17+ DDI source from deviceboxhq.com to github.com/doronz88/DeveloperDiskImage (build 17E5179g), resolving identity-not-found failures on newer chips (A19 Pro)
- Add QueryPersonalizationManifest fast path: try existing device-side manifest before requesting Apple TSS, and reconnect the service on failure since the socket is closed by the device. This skips nonce + TSS on re-mounts when the manifest is still valid
- Replace hardcoded Manifest struct with dynamic map entries and iterate all Trusted entries when building the TSS request
- Update TSS @versioninfo and add @uuid field
- Add ProductBuildVersion-based DDI cache validation and stream DMG/trustcache directly to disk during download
Switch iOS 17+ DDI source from deviceboxhq.com to github.com/doronz88/DeveloperDiskImage (build 17E5179g), resolving identity-not-found failures on newer chips (A19 Pro). Add QueryPersonalizationManifest fast path: try existing device-side manifest before requesting Apple TSS, and reconnect the service on failure since the socket is closed by the device. This skips nonce + TSS on re-mounts when the manifest is still valid, based on pymobiledevice3's PersonalizedImageMounter.mount(). Replace hardcoded Manifest struct with dynamic map entries and iterate all Trusted entries when building the TSS request. Update TSS @versioninfo and add @uuid field, matching pymobiledevice3's TSSRequest construction. Also add ProductBuildVersion-based DDI cache validation and stream DMG/trustcache directly to disk during download.
abc2806 to
620178c
Compare
Use the deviceboxhq CDN (owned, fast, global) for the iOS 17+ personalized DDI rather than raw.githubusercontent.com. Bump the hosted image to build ddi-17E5179g (the newer universal DDI that also fixes A19 Pro). The versioned filename keeps the local cache deterministic, so the GitHub-specific cache revalidation is no longer needed. All of the mount-reliability improvements are kept: dynamic BuildManifest map, QueryPersonalizationManifest fast path with reconnect, and the updated TSS request (VersionInfo/UUID) for newer chips. Co-Authored-By: Daniel Paulus <daniel@checklyhq.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
# Conflicts: # ios/imagemounter/imagedownloader.go
Owner
|
Awesome stuff! I would rather keep the DDI on deviceboxhq.com because it has a fast global CDN, so I made a few changes. Thanks a ton for this improvement! |
Co-Authored-By: Daniel Paulus <daniel@checklyhq.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.